/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.easoft.code.pos.integration.cae.proceso;

import com.easoft.code.pos.integration.cae.bean.DatosGeneraCae;
import com.easoft.code.pos.integration.cae.bean.XmlCae;
import com.easoft.code.pos.integration.cae.util.UtilsString;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import sun.misc.BASE64Encoder;

/**
 *
 * @author Jose
 */
public class GeneraArchivos {

    /**
     *
     */
    public static synchronized int crearArchivosTxt(DatosGeneraCae cae) {
        FileWriter fichero = null;
        int e = 0;
        try {
            String pintar = "";
            String nombre = "";
            for (int i = 0; i < 10; i++) {
                if (i == 0) {
                    nombre = "serie";
                    pintar = cae.getTipo() + cae.getSerie() + "001";
                    e = 1;
                } else if (i == 1) {
                    nombre = "folio";
                    cae.setFolio(UtilsString.fill(cae.getFolio(), 10, '0', UtilsString.LEFT));
                    pintar = cae.getAnio() + cae.getFolio();
                    e = 2;
                } else if (i == 2) {
                    nombre = "nitC";
                    pintar = cae.getNitCliente();
                    e = 3;
                } else if (i == 3) {
                    nombre = "nitG";
                    pintar = cae.getNitGFace();
                    e = 4;
                } else if (i == 4) {
                    nombre = "nitE";
                    pintar = cae.getNitEmisor();
                    e = 5;
                } else if (i == 5) {
                    nombre = "fEmi";
                    pintar = cae.getFechaEmicion();
                    e = 6;
                } else if (i == 6) {
                    nombre = "nAuto";
                    pintar = cae.getNumAutorizacion();
                    e = 7;
                } else if (i == 7) {
                    nombre = "neto";
                    pintar = cae.getNeto();
                    e = 8;
                } else if (i == 8) {
                    nombre = "iva";
                    pintar = cae.getIva();
                    e = 9;
                } else if (i == 9) {
                    nombre = "total";
                    pintar = cae.getTotal();
                    e = 10;
                }
                fichero = new FileWriter("C:/CAE/azGenCAE/DSA/" + nombre + ".txt");
                PrintWriter pw = null;
                pw = new PrintWriter(fichero);
                pw.print(pintar.trim());
                fichero.close();
            }

        } catch (Exception fe) {
            fe.printStackTrace();
        }
        return e;
    }

    public static synchronized XmlCae leerArchivoXML() {
        XmlCae retorna = null;
        try {
            retorna = new XmlCae();
            String inputFileName = "C:/CAE/azGenCAE/DSA/CAE.xml";
            FileReader inputFileReader = new FileReader(inputFileName);
            BufferedReader inputStream = new BufferedReader(inputFileReader);
            String linea = inputStream.readLine();
            retorna.setTextoCompleto(base64(linea));
            String t[] = UtilsString.parseLine(linea, (byte) 0, "<ds:SignatureValue>");
            String t2[] = UtilsString.parseLine(t[1], (byte) 0, "</ds:SignatureValue>");
            if ("".equals(t2[0].trim()) || t2[0].trim().length() == 0) {
                retorna.setCae("error");
            } else {
                retorna.setCae(t2[0]);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return retorna;
    }

    public static String base64(String xml) {
        BASE64Encoder b64enc = new BASE64Encoder();
        String coded = b64enc.encode(xml.getBytes());
        return coded;
    }
}
